<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html><head> 
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>web.input (web.py)</title> 
  <link rel="stylesheet" type="text/css" href="/static/webpy-new.css"/> 
  <link rel="SHORTCUT ICON" href="/static/favicon.ico"/> 
</head><body> 
 
        <div id="header"><table class="header"><tr>
                <td class="logo"><a href="/" title="Home"><img src="/static/webpy.gif" alt="" /></a></td> 
<td class="blurb">&ldquo;Think about the ideal way to write a web app.<br />Write the code to make it happen.&rdquo; [<a href="/philosophy">more...</a>]</td> </tr>
</table>
        </div> 
        <div id="location"> 
                <a href="/">home</a> &gt; web.input
        </div> 
<div id="container"> 
<div id="sidebar">
<strong>get started:</strong>
<ul class="body">
  <li><a href="/install">install</a></li>
  <li><a href="/docs/0.3/tutorial">tutorial</a></li>
</ul>
<strong>learn more:</strong>
<ul class="body">
<li><a href="/docs/0.3/api">api reference</a></li>
<li><a href="/cookbook/">cookbook</a></li>
<li><a href="/src/">code examples</a></li>
</ul>

<strong>dive in:</strong>
<ul class="body"> 
<li><a href="https://github.com/webpy/webpy">source code</a></li>
<li><a href="http://groups.google.com/group/webpy/">mailing list</a></li>
<li><a href="https://github.com/webpy/webpy/issues">issue tracker</a></li>
</ul>
</div>

<div id="main"> 
<div id="content" class="body"> 
<h1>web.input</h1>

<h2>web.input</h2>

<h3>问题</h3>

<p>如何从form或是url参数接受用户数据.</p>

<h3>解决方法</h3>

<p>web.input()方法返回一个包含从url(GET方法)或http header(POST方法,即表单POST)获取的变量的web.storage对象(类似字典).举个例子,如果你访问页面http://example.com/test?id=10,在Python后台你想取得 id=10 ,那么通过web.input()那就是小菜一碟:</p>

<pre><code>class SomePage:
    def GET(self):
        user_data = web.input()
        return "&lt;h1&gt;" + user_data.id + "&lt;/h1&gt;"
</code></pre>

<p>有时你想指定一个默认变量,而不想使用None.参考下面的代码:</p>

<pre><code>class SomePage:
    def GET(self):
        user_data = web.input(id="no data")
        return "&lt;h1&gt;" + user_data.id + "&lt;/h1&gt;"
</code></pre>

<p>注意,web.input()取得的值都会被当作string类型,即使你传递的是一些数字.</p>

<p>如果你想传递一个多值变量,比如像这样:</p>

<p><select multiple size="3"><option>foo</option><option>bar</option><option>baz</option></select></p>

<p>你需要让web.input知道这是一个多值变量,否则会变成一串而不是一个变量 .传递一个list给 web.input 作为默认值,就会正常工作.举个例子, 访问 http://example.com?id=10&amp;id=20:</p>

<pre><code>class SomePage:
    def GET(self):
        user_data = web.input(id=[])
        return "&lt;h1&gt;" + ",".join(user_data.id) + "&lt;/h1&gt;"
</code></pre>

<p>译者补充:
多值变量这儿,在WEB上除了上面所说的multiple select 和query strings外,用得最多的就是复选框(checkbox)了,另外还有多文件上传时的&lt;input type="file" ...&gt;.</p>

<div style="clear: both;"></div> 
 
</div> 
 
</div> 
</div>
        <div id="footer"> 
    <p>started by <a style="color: gray;" href="http://www.aaronsw.com/">Aaron Swartz</a> (<a style="color: black;" href="mailto:webpy@aaronsw.com">webpy@aaronsw.com</a>)</p>

<p><a href="https://github.com/webpy/webpy.github.com/blob/master/cookbook/input.zh-cn.md">fork this page on GitHub</a></p>
</div> 
 
</body> 
</html> 
